<?php declare(strict_types=1);


namespace PinWuYun\domain\service\starLinkServer;

use GuzzleHttp\Exception\GuzzleException;
use Psr\Http\Message\ResponseInterface;

/**
 * Class Goods 商品类服务
 * @package app\starLinkServer
 */
class Goods extends Common
{
    /**
     * 获取商品spu
     * @param array $params
     * @return ResponseInterface
     * @throws GuzzleException
     */
    public function getSpuIdList(array $params): ResponseInterface
    {
        return $this->start('POST', '/goods/getSpuIdList', [
            // 页码，默认 1
            'pageIndex' => $params['pageIndex'] ?? 1,
            // 每页大小，默认 500，最大1000
            'pageSize' => $params['pageSize'] ?? 500,
            // 选品开始时间，格式 为 'yyyy-MM-dd HH:mm:ss'
            'createStartTime' => $params['createStartTime'] ?? 0,
            // 选品截止时间，格式 为 'yyyy-MM-dd HH:mm:ss'
            'createEndTime' => $params['createEndTime'] ?? 0,
            // 一级分类ID
            'firstCategoryId' => $params['firstCategoryId'] ?? 0,
            // 二级分类ID
            'secondCategoryId' => $params['secondCategoryId'] ?? 0,
            // 三级分类ID
            'thirdCategoryId' => $params['thirdCategoryId'] ?? 0,
            // 品牌ID
            'brandId' => $params['brandId'] ?? 0,
            // 商品状态： -1.全部，0.已上架，1.已下架，默认 0
            'status' => $params['status'] ?? 0,
            // 商品是否含视频： -1、全部 1、只含视频，默认 -1
            'hasVideo' => $params['hasVideo'] ?? '',
        ]);
    }

    /**
     * 根据SPUID 查询SPU详情【不包含sku列表】
     * @param array $params
     * @return ResponseInterface
     * @throws GuzzleException
     */
    public function getSpuDetail(array $params): ResponseInterface
    {
        return $this->start('post', '/goods/getSpuDetail', [
            // 一次最多请求50个spu，超过按50个算，用英文逗号分隔 "111866","112231",
            'spuIds' => $params['spuIds'],
        ]);
    }

    /**
     * 根据SPUID 查询SKU列表
     * @param array $params
     * @return ResponseInterface
     * @throws GuzzleException
     */
    public function getSkuListDetailBySpuId(array $params): ResponseInterface
    {
        return $this->start('POST', '/goods/getSkuListDetailBySpuId', [
            'spuId' => $params['spuId'],
        ]);
    }

    /**
     * 查询品牌列表
     * @param array $params
     * @return ResponseInterface
     * @throws GuzzleException
     */
    public function getBrandList(array $params): ResponseInterface
    {
        return $this->start('POST', '/goods/findBrandList', [
            'pageIndex' => $params['pageIndex'] ?? '',
            'pageSize' => $params['pageSize'] ?? '',
        ]);
    }

    /**
     * 查询分类信息
     * @param array $params
     * @return ResponseInterface
     * @throws GuzzleException
     */
    public function getProdCategory(array $params): ResponseInterface
    {
        return $this->start('POST', '/goods/findProdCategory', [
            // 分类ID,不传则查询所有一级分类,反之则查询该分类下的子分类信息
            'categoryId' => $params['categoryId'] ?? '',
        ]);
    }


    /**
     * 查询商品库存
     * @param array $params
     * @return ResponseInterface
     * @throws GuzzleException
     */
    public function getSkuInventory(array $params): ResponseInterface
    {
        return $this->start('POST', '/goods/findSkuInventory', [
            // 区域ID 省市区唯一ID, 使用英文逗号拼接
            'areaId' => $params['areaId'] ?? '',
            // 区域ID 省市区唯一ID, 使用英文逗号拼接
            'codes' => $params['codes'] ?? ''
        ]);
    }

    /**
     *  查询商品价格
     * @param array $params
     * @return ResponseInterface
     * @throws GuzzleException
     */
    public function getSkuSalePrice(array $params): ResponseInterface
    {
        return $this->start('POST', '/goods/findSkuSalePrice', [
            // 最多查200个,code 多个以英文逗号拼接
            'codes' => $params['codes'] ?? '',
        ]);
    }

    /**
     * 查询商品变更记录
     * @param array $params
     * @return ResponseInterface
     * @throws GuzzleException
     */
    public function queryProductChangeRecord(array $params): ResponseInterface
    {
        return $this->start('POST', '/goods/queryProductChangeRecord', [
            // 页码，默认 1
            'pageIndex' => $params['pageIndex'] ?? '',
            // 每页大小，默认 500，最大1000
            'pageSize' => $params['pageSize'] ?? '',
            // 开始日期yyyy-MM-dd hh:mm:ss
            'changeDateStart' => $params['changeDateStart'] ?? '',
            // 结束日期yyyy-MM-dd hh:mm:ss
            'changeDateEnd' => $params['changeDateEnd'] ?? '',
            // spuId
            'spuId' => $params['spuId'] ?? '',
            // 记录类型 0:上架（新增）1:上架（变更） 2:下架
            'recordType' => $params['recordType'] ?? 0,
        ]);
    }
}